package com.btpj.module_main.data.remote.repository

import com.btpj.jetpack.http.RetrofitClient
import com.btpj.jetpack.http.api.BaseRepository
import com.btpj.jetpack.entity.ApiResult
import com.btpj.module_main.data.entity.*
import com.btpj.module_main.data.remote.api.MainApi

/**
 * 首页数据仓库
 *
 * @author LTP 2020/7/10
 */
class MainRepository(private val retrofitClient: RetrofitClient) : BaseRepository() {

    /**
     *  请求轮播图
     */
    suspend fun getBanner(): ApiResult<MutableList<Banner>> {
        return callRequest {
            handleResponse(retrofitClient.create(MainApi::class.java).getBanner())
        }
    }

    /**
     * 请求首页列表
     *
     * count 请求数量
     */
    suspend fun getHomeList(count: Int): ApiResult<DataFeed> {
        return callRequest {
            handleResponse(retrofitClient.create(MainApi::class.java).getHomeList(count))
        }
    }

    /**
     * 请求体系列表
     */
    suspend fun getTreeList(): ApiResult<MutableList<TreeData>> {
        return callRequest {
            handleResponse(retrofitClient.create(MainApi::class.java).getTreeList())
        }
    }

    /**
     * 请求Tabs
     */
    suspend fun getTabData(): ApiResult<MutableList<ProjectTabItem>> {
        return callRequest {
            handleResponse(retrofitClient.create(MainApi::class.java).getTabData())
        }
    }

    /**
     * 请求TabItem
     *
     * count 请求数量
     */
    suspend fun getTabItemPageData(count: Int, id: Int): ApiResult<ProjectPageItem> {
        return callRequest {
            handleResponse(
                retrofitClient.create(MainApi::class.java).getTabItemPageData(count, id)
            )
        }
    }

    /**
     * 请求Navigation
     */
    suspend fun getNavigationData(): ApiResult<MutableList<NavItem>> {
        return callRequest {
            handleResponse(
                retrofitClient.create(MainApi::class.java).getNavigationData()
            )
        }
    }
}